package service;

import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import pojo.User;
import util.SqlSessionFactoryUtil;

import java.util.List;

public class UserService {
    private final SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();

    /**
     * 查询所有用户记录
     * @return
     */
    public List<User> selectAllUsers() {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        List<User> users = userMapper.selectAllUsers();

        sqlSession.close();
        return users;
    }

    /**
     * 通过用户编号查询一条用户记录
     * @param userNo
     * @return
     */
    public User selectOneByUserNo(String userNo) {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        List<User> users = userMapper.selectOneByUserNo(userNo);

        sqlSession.close();
        return users.isEmpty() ? null : users.get(0);
    }

    /**
     * 用户登录
     * @param user
     * @return
     */
    public boolean userLogin(User user) {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        List<User> users = userMapper.selectOneByUserNo(user.get_userNo());

        boolean result = false;
        if (!users.isEmpty()) {
            String password = users.get(0).get_password();

            if(password.equals(user.get_password())) result = true;
        }

        sqlSession.close();
        return result;
    }

    /**
     * 用户注册
     * @param user
     * @return
     */
    public boolean userRegister(User user) {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        String userNo = user.get_userNo();
        boolean result = false;
        List<User> users = userMapper.selectOneByUserNo(userNo);
        if (users.isEmpty()) {
            result = true;
            userMapper.userAdd(user);
            sqlSession.commit();
        }
        sqlSession.close();
        return result;
    }
}
